package virtualpostit.com;

import java.util.Observable;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Classe che serve per gestire in maniera centralizzata tutti i messaggi da dare
 * all'utente, ad esempio conferma prima di uscire, oppure mostrare un messaggio
 * di errore ecc.
 * 
 * @author Gruppo Capo, De Notaris, Pastore e Vento
 * @since Luglio 2011
 */
public class MyDialog extends Observable {

	// Attributi di classe
	private Activity a;
	private String itemChoice[] = {"",""};

	/**
	 * Metodo che associa una finestra di dialogo ad un'attività
	 * @param a l'attività in cui il Dialog verrà visualizzato
	 */
	public MyDialog(Activity a) {
		this.a = a;
	}

	/**
	 * Mostra una finestra di dialogo con associata titolo,messaggio e icona grafica.
	 * 
	 * @param title titolo della finestra di dialogo
	 * @param message messaggio che comparirà nel corpo della finestra 
	 * @param icon icona associata alla finestra di dialogo
	 * @return Dialog dialogo a video
	 */
	public Dialog showDialog(String title, String message, int icon) {
		AlertDialog alertDialog = new AlertDialog.Builder(a).create();
		alertDialog.setTitle(title);
		alertDialog.setMessage(message);
		alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				setChanged();
				notifyObservers();
			}
		});
		alertDialog.setIcon(icon);
		alertDialog.show();
		return alertDialog;
	}

	/**
	 * Metodo che gestisce la finestra di dialogo con la quale 
	 * l'applicazione chiede conferma all'utente se ci si vuole 
	 * veramente disconnettersi dalla stessa.
	 */
	public void exit() {
		AlertDialog.Builder builder = new AlertDialog.Builder(a);
		builder.setMessage("Sei sicuro di voler uscire?").setCancelable(false)
		.setPositiveButton("Si", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int id) {
				//termino l'attività a e il suo chiamante; di fatto, termino l'applicazione.
				a.setResult(-1, a.getIntent());
				a.finish();
			}
		})
		.setNegativeButton("No", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int id) {
				dialog.cancel();
			}
		});
		AlertDialog alert = builder.create();
		alert.show();
	}

	/**
	 * Metodo che gestisce la finestra di dialogo che mostra il messaggio di 
	 * informazioni sugli sviluppatori.
	 */
	public void info() {
		final Dialog dialog = new Dialog(a);
		dialog.setContentView(R.layout.custom_dialog);
		dialog.setTitle("Informazioni");
		TextView text = (TextView) dialog.findViewById(R.id.TextView01);
		text.setPadding(10, 5, 10, 5);
		text.setText("\nVirtual Post-It è un applicazione sviluppata nell'ambito del corso di Sistemi Operativi presso l'Università degli Studi di Salerno, CdL Ingegneria Informatica, professor Pierluigi Ritrovato A.A. 2010-2011.\n\nL'applicazione è stata sviluppata da:\nGennaro Capo - 0622700066\nVincenzo De Notaris - 0622700102\nMatteo Pastore - 0622700095\nManuela Vento - 0622700101\n\nTutti i diritti sono riservati.");
		ImageView image = (ImageView) dialog.findViewById(R.id.ImageView01);
		image.setImageResource(R.drawable.logo2);
		Button button = (Button) dialog.findViewById(R.id.Button01);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				dialog.dismiss();
			}
		});
		dialog.show();
	}

	/**
	 * Metodo che gestisce la finestra di dialogo che chiede all'utente di selezionare 
	 * una categoria per effettuare la ricerca e successivamente chiede il raggio entro 
	 * il quale ricercare tale categoria di punti di interesse.
	 */
	public void search() {
		final String[] items = { "Tutte","Ristorazione", "Alloggi",
				"Strutture Commerciali", "Rifornimento Carburante" };
		final String[] items2=new String[4];
		items2[0]="fino a "+(int)GenericMapActivity.SHORT_RADIUS+" km";
		items2[1]="fino a "+(int)GenericMapActivity.MEDIUM_RADIUS+" km";
		items2[2]="fino a "+(int)GenericMapActivity.LONG_RADIUS+" km";
		items2[3]="fino a "+(int)GenericMapActivity.VERYLONG_RADIUS+" km";
		AlertDialog.Builder builder = new AlertDialog.Builder(a);
		builder.setTitle("Scegli la categoria");
		builder.setSingleChoiceItems(items, -1,	new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int item) {
				itemChoice[0] = items[item];
				dialog.cancel();
				AlertDialog.Builder builder2 = new AlertDialog.Builder(a);
				builder2.setTitle("Scegli la distanza");
				builder2.setSingleChoiceItems(items2, -1,new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int item) {
						itemChoice[1]=String.valueOf(item);
						setChanged();
						notifyObservers();
						dialog.cancel();
					}
				});
				AlertDialog alert2=builder2.create();
				alert2.show();


			}
		});
		AlertDialog alert = builder.create();
		alert.show();
	}

	/**
	 * Restituisce un vettore di stringhe <code> vect</code> composto da due stringhe:
	 * vect[0] è la  categoria che è stata selezionata dall'utente
	 * vect[1] è la distanza  che è stata selezionata dall'utente
	 * @return String[] vettore di scelte.  					
	 */
	public String[] getItemChoice() {
		return itemChoice;
	}




}